package com.holly.unit.deform.api;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.holly.unit.db.api.pojo.page.PageResult;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 接口描述: 表单设计器url授权表 API
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/4/2 10:05
 */
public interface DeformUrlAuthApi<T> {


    /***
     * 初始化授权表
     * @param desformCode
     * @return
     */
    boolean initialUrlAuth(String desformCode);

    /**
     * 判断某个url是否是通过的状态
     *
     * @param desformCode
     * @param urlType
     * @return
     */
    boolean urlIsPassed(String desformCode, String urlType);


    /**
     * 获取url的状态
     *
     * @param desformCode
     * @param urlType
     * @return
     */
    Integer getUrlStatus(String desformCode, String urlType);

    /**
     * 设置url的状态
     *
     * @param desformCode
     * @param urlType
     * @param status
     * @return
     */
    boolean setUrlStatus(String desformCode, String urlType, Integer status);

    /**
     * 设置url的状态
     *
     * @param wrapper
     * @param urlType
     * @param status
     * @return
     */
    boolean setUrlStatus(LambdaQueryWrapper<T> wrapper, String urlType, Integer status);

    /**
     * 设置所有的url的状态
     *
     * @param desformCode
     * @param status
     * @return
     */
    boolean setAllUrlStatus(String desformCode, Integer... status);


    /***
     * 根据表单编码查询所有表单URL的状态
     * @param desformCode 表单编码
     * @return
     */
    List<T> fetchAllStatusByDesformCode(String desformCode);

    /***
     * 根据查询条件查询所有表单URL的状态
     * @param queryWrapper 查询条件
     * @return
     */
    List<T> fetchAllStatusByWrapper(LambdaQueryWrapper<T> queryWrapper);

    /**
     * 获取表单URL授权列表（泛型分页）
     *
     * @param
     * @return 带分页的列表
     * @author holly
     * @Date:   2022-03-03
     */
    PageResult<T> page(T t, Map<String,String[]> paramMap);

    /**
     * 批量删除表单设计URL授权表
     *
     * @param ids 表单设计器模板表对象id
     * @author holly
     * @date 2020/10/29 17:43
     */
    void delBatch(List<String> ids);

    /**
     * 批量删除表单设计URL授权表
     * @param ids 逗号分割拼接的id
     */
    void delBatch(String ids);

    /***
     * 查询实体信息
     * @param queryWrapper 查询条件
     * @return
     */
    T fetchEntity(LambdaQueryWrapper<T> queryWrapper);

    /***
     * 通过id查询实体信息
     * @param id
     * @return
     */
    T fetchEntityById(Serializable id);

    /***
     * 新增
     * @param t
     */
    void saveEntity(T t);

    /***
     * 编辑
     * @param t
     * @return
     */
    boolean editEntity(T t);







}
